---
title: Motivation
section: About
---

import ReactPlayer from 'react-player'
import * as styles from './video.module.css'
import UseGesture from './code/rug'

# Why use @use-gesture

&zwnj;<UseGesture /> is a library that focuses on making complex gestures such as drag and pinch easy to configure.

In most situations, `onDrag` becomes as easy to set up as `onMouseMove`. However, you remain in control of the full gesture logic, which allows you to make your components behave exactly the way you want.

<carbon-ad />

## Augmenting events

A secondary aspect of <UseGesture /> is to upgrade gestures with additional kinematics attributes, such as **velocity**, **distance**, **delta** and more, that don't come with native browser events.

&zwnj;<UseGesture /> also debounces `scroll`, `wheel` and `move` events, which gives you the capacity to [trigger logic
when the gesture starts or ends out of the box](/docs/gestures/#start-and-end-handlers).

## Going further

Alexandra Holachek ([site](https://alex.holachek.com/), [twitter](https://twitter.com/alex_holachek)) gave a great talk at React Conf about Progressive Web Animations, where she explains the principles of her approach on creating native-like UI. Her demos use React-spring and <UseGesture pkg="react" />. Alex's talk strongly influenced some of the features in <UseGesture />.

<div className={styles.playerWrapper}>
  <ReactPlayer
    className={styles.player}
    light
    playing
    url="https://www.youtube.com/watch?v=laPsceJ4tTY"
    width="100%"
    height="100%"
  />
</div>

## Where to get help

You can either [report an issue](https://github.com/pmndrs/use-gesture/issues) or [have a chat on our Discord](https://discord.gg/dS8d6jS).
